Struktur Dasar Module di Move-Sui Part I
Kerja bagus! Kamu sudah belajar cara men-setup package Move-Sui dan memahami komponen pentingnya. Sekarang, di pelajaran ini kita akan melihat seperti apa struktur sebuah smart contract di Sui Move. Komponen apa saja yang membentuk sebuah smart contract yang lengkap?
Keyword module
Di Move-Sui, kita mendefinisikan smart contract menggunakan keyword module, mirip seperti kita memakai keyword contract di Solidity. Berikut adalah sintaks lengkap deklarasi sebuah smart contract.
module package_name::module_name {
// kode module berada di sini
}
Mari pahami apa itu package_name dan module_name.
package_nameadalah nama yang kamu berikan saat membuat package. Misal pada perintahsui move new hello_world, nama packagenya adalahhello_world.module_nameadalah nama module yang kamu buat di dalam package. Satu package bisa berisi banyak module, karena itu kita harus menuliskannya secara eksplisit.
Contoh pada proyek “Hello World” kita:
module hello_world::hello_world {
// kode module berada di sini
}
Semua isi kontrak (termasuk import) ditulis di dalam blok module pada Move-Sui; berbeda dengan beberapa bahasa lain yang memisahkan bagian import di luar.
Keyword use
Di Move-Sui, use dipakai untuk mengimpor module lain ke dalam module kita. Struktur umumnya:
use <Address/Alias>::<ModuleName>;
Penjelasan bagian-bagiannya:
<Address/Alias>adalah address dari module yang ingin kita gunakan. Untuk menyederhanakan, kita biasanya memakai alias yang didefinisikan diMove.toml(sudah dibahas di pelajaran sebelumnya) daripada menulis address penuh.<ModuleName>adalah nama module-nya. Contoh: jika packagesuimemiliki moduletransferyang ingin kita pakai, maka:
use sui::transfer;
Beberapa module penting di Move-Sui
Berikut module bawaan yang sering dipakai dalam banyak smart contract:
use std::string;- Memungkinkan kita memakai tipe string.
use sui::transfer;- Menyediakan fungsi untuk mentransfer sebuah object dari satu alamat akun ke alamat lain.
use sui::object;- Mengimpor module
objectdari framework Sui; berguna untuk membuat object.
- Mengimpor module
use sui::tx_context;- Mengimpor
tx_context; membantu mendapatkan informasi dasar transaksi seperti alamat pengirim, penanda epoch, dsb.
- Mengimpor
Masih banyak module lain untuk kegunaan khusus. Untuk saat ini, yang di atas sudah cukup.
Penutup
Kita sudah membahas dua keyword dasar: module (untuk mendefinisikan module) dan use (untuk mengimpor module lain). Selanjutnya kita akan mempelajari istilah-istilah lain yang membantu membangun sebuah module di Sui Move.